package com.easy.cloud.web.service.upms.biz.service;

import cn.hutool.core.lang.tree.Tree;
import com.easy.cloud.web.component.core.service.IInitService;
import com.easy.cloud.web.service.upms.api.dto.MenuDTO;
import com.easy.cloud.web.service.upms.api.vo.MenuVO;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.Set;

/**
 * Menu interface
 *
 * @author Fast Java
 * @date 2023-08-03 14:45:40
 */
public interface IMenuService extends IInitService {

    /**
     * 新增数据
     *
     * @param menuDTO 保存参数
     * @return com.easy.cloud.web.service.upms.api.vo.MenuVO
     */
    MenuVO save(MenuDTO menuDTO);

    /**
     * 更新数据，默认全量更新
     *
     * @param menuDTO 保存参数
     * @return com.easy.cloud.web.service.upms.api.vo.MenuVO
     */
    MenuVO update(MenuDTO menuDTO);

    /**
     * 根据ID删除数据
     *
     * @param menuId 对象ID
     * @return java.lang.Boolean
     */
    Boolean removeById(String menuId);

    /**
     * 根据ID获取详情
     *
     * @param menuId 对象ID
     * @return java.lang.Boolean
     */
    MenuVO detailById(String menuId);

    /**
     * 获取用户菜单树
     *
     * @param parentId 菜单根目录
     * @param channels 用户角色编码
     * @return java.util.List<cn.hutool.core.lang.tree.Tree < java.lang.String>>
     */
    List<Tree<String>> tree(String parentId, List<String> channels);
}